package co.edu.uniandes.vehialpes.negocio;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.Duration;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import co.edu.uniandes.vehialpes.ws.Solicitud;
import co.edu.uniandes.ws.solicitudMecaplus.SolicitudMecaplus;
import co.edu.uniandes.ws.solicitudMecaplus.SolicitudMecaplus_Type;

/** Clase de negocio que representa un servicio */
public class ServicioMecaplus {

	public void solicitarServicio(String idSolicitud,
			  					  String idCliente,
			  					  Date fechaSolicitud,
			  					  String lugarSolicitud,
			  					  String tipoSolicitud,
			  					  String descripcion) {
		
		// llama un web service.
		URL url = null; // URL donde esta alojado el servicio.
		try {
			
			url = new URL("http://localhost:9999/ws/vehialpes?wsdl");
			
	        //1st argument service URI, refer to wsdl document above
			//2nd argument is service name, refer to wsdl document above http://solicitudMecaplus.ws.uniandes.edu.co/ 
	        QName qname = new QName("http://solicitudMecaplus.ws.uniandes.edu.co/", "SolicitudMecaplusImpService");
	        Service service = Service.create(url, qname);
	        SolicitudMecaplus solicitudWS = service.getPort(SolicitudMecaplus.class);
	        
	        SolicitudMecaplus_Type parameters = new SolicitudMecaplus_Type();
	        parameters.setIdSolicitud(idSolicitud);
	        parameters.setIdCliente(idCliente);
	        
	        GregorianCalendar c = new GregorianCalendar();
	        c.setTime(fechaSolicitud);
	        XMLGregorianCalendar fecha=null;
	
	        try {
				fecha = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
			} catch (DatatypeConfigurationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
       
	        parameters.setFechaSolicitud(fecha);
	        parameters.setLugarSolicitud(lugarSolicitud);
	        parameters.setTipoSolicitud(tipoSolicitud);
	        parameters.setDescripicion(descripcion);
       	        
	        System.out.println(solicitudWS.newOperation(parameters));
		} catch (MalformedURLException e) {
			
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	} 
}
